home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / vdl020d.zip / VSALHALT.DOC < prev    next >
Text File  |  1993-04-14  |  70KB  |  2,420 lines

  1. (* ******************************
  2.  
  3. {────────────────────────────────────────────────────────────────────────────}
  4.  
  5.  
  6.  
  7. {────────────────────────────────────────────────────────────────────────────}
  8.  
  9. {--------------------------}
  10. { SCSI-2 Printer Functions }
  11. {--------------------------}
  12.  
  13. {────────────────────────────────────────────────────────────────────────────}
  14.  
  15. (*-
  16.  
  17. [FUNCTION]
  18.  
  19. Function  SAL_S2PrinterFormat(         Bus         : BYTE;
  20.                                     SubChannel  : BYTE;
  21.                                     Target      : BYTE;
  22.                                     Lun         : BYTE;
  23.                                     Flags       : BYTE;
  24.                                     DataSize    : LONGINT;
  25.                                     DataBuff    : Pointer     ): TError;
  26.  
  27. [PARAMETERS]
  28.  
  29. Bus         ?
  30. SubChannel  ?
  31. Target      Device Target ID
  32. Lun         Device Logical Unit Number
  33. Flags       ?
  34. DataSize    Size of Data Buffer
  35. DataBuff    Pointer to Data Buffer
  36.  
  37. [RETURNS]
  38.  
  39. [DESCRIPTION]
  40.  
  41. This command issues the PRINTER FORMAT command.
  42.  
  43. [SEE-ALSO]
  44.  
  45. [EXAMPLE]
  46.  
  47. -*)
  48.  
  49. Function  SAL_S2PrinterFormat(         Bus         : BYTE;
  50.                                     SubChannel  : BYTE;
  51.                                     Target      : BYTE;
  52.                                     Lun         : BYTE;
  53.                                     Flags       : BYTE;
  54.                                     DataSize    : LONGINT;
  55.                                     DataBuff    : Pointer     ): TError;
  56.  
  57. Var
  58.   CDB : TCDB;
  59.  
  60. BEGIN
  61.  
  62.   HM_CDB6Load(   @CDB,
  63.                  $04,
  64.                  Flags,
  65.                  T4Byte( DataSize )[3],
  66.                  T4Byte( DataSize )[2],
  67.                  T4Byte( DataSize )[1],
  68.                  0                         );
  69.  
  70.   SAL_S2PrinterFormat:=HM_ExecSCSI(  ES_Poll+ES_Write,
  71.                                   Target,
  72.                                   Lun,
  73.                                   Channel,
  74.                                   SubChannel,
  75.                                   @CDB,
  76.                                   6,
  77.                                   DataBuff,
  78.                                   DataSize,
  79.                                   NIL,
  80.                                   0,
  81.                                   NIL                 );
  82.  
  83. END;  { SAL_S2PrinterFormat }
  84.  
  85. {────────────────────────────────────────────────────────────────────────────}
  86.  
  87.  
  88.  
  89.  
  90.   { This command issues the PRINTER PRINT  command.            }
  91.  
  92. (*-
  93.  
  94. [FUNCTION]
  95.  
  96. [PARAMETERS]
  97.  
  98. Bus         ?
  99. SubChannel  ?
  100. Target      Device Target ID
  101. Lun         Device Logical Unit Number
  102. Flags       ?
  103. DataSize    Size of Data Buffer
  104. DataBuff    Pointer to Data Buffer
  105.  
  106. [RETURNS]
  107.  
  108. [DESCRIPTION]
  109.  
  110. [SEE-ALSO]
  111.  
  112. [EXAMPLE]
  113.  
  114. -*)
  115.  
  116. Function  SAL_S2PrinterPrint(          Bus         : BYTE;
  117.                                     SubChannel  : BYTE;
  118.                                     Target      : BYTE;
  119.                                     Lun         : BYTE;
  120.                                     Flags       : BYTE;
  121.                                     DataSize    : LONGINT;
  122.                                     DataBuff    : Pointer     ): TError;
  123.  
  124. Var
  125.   CDB : TCDB;
  126.  
  127. BEGIN
  128.  
  129.   HM_CDB6Load(   @CDB,
  130.                  $0A,
  131.                  Flags,
  132.                  T4Byte( DataSize )[3],
  133.                  T4Byte( DataSize )[2],
  134.                  T4Byte( DataSize )[1],
  135.                  0                         );
  136.  
  137.   SAL_S2PrinterPrint:= HM_ExecSCSI(  ES_Poll+ES_Write,
  138.                                   Target,
  139.                                   Lun,
  140.                                   Channel,
  141.                                   SubChannel,
  142.                                   @CDB,
  143.                                   6,
  144.                                   DataBuff,
  145.                                   DataSize,
  146.                                   NIL,
  147.                                   0,
  148.                                   NIL                 );
  149.  
  150. END;  { SAL_S2PrinterPrint }
  151.  
  152. {────────────────────────────────────────────────────────────────────────────}
  153.  
  154. (*-
  155.  
  156. [FUNCTION]
  157.  
  158. Function  SAL_S2PrinterRecoverData(    Bus         : BYTE;
  159.                                     SubChannel  : BYTE;
  160.                                     Target      : BYTE;
  161.                                     Lun         : BYTE;
  162.                                     Flags       : BYTE;
  163.                                     DataSize    : LONGINT;
  164.                                     DataBuff    : Pointer     ): TError;
  165.  
  166. [PARAMETERS]
  167.  
  168. Bus         ?
  169. SubChannel  ?
  170. Target      Device Target ID
  171. Lun         Device Logical Unit Number
  172. Flags       ?
  173. DataSize    Size of Data Buffer
  174. DataBuff    Pointer to Data Buffer
  175.  
  176. [RETURNS]
  177.  
  178. [DESCRIPTION]
  179.  
  180. This command issues the PRINTER RECOVER BUFFERED DATA.
  181.  
  182. [SEE-ALSO]
  183.  
  184. [EXAMPLE]
  185.  
  186. -*)
  187.  
  188. Var
  189.   CDB : TCDB;
  190.  
  191. BEGIN
  192.  
  193.   HM_CDB6Load(   @CDB,
  194.                  $14,
  195.                  Flags,
  196.                  T4Byte( DataSize )[3],
  197.                  T4Byte( DataSize )[2],
  198.                  T4Byte( DataSize )[1],
  199.                  0                         );
  200.  
  201.   SAL_S2PrinterRecoverData:=HM_ExecSCSI(  ES_Poll+ES_Read,
  202.                                        Target,
  203.                                        Lun,
  204.                                        Channel,
  205.                                        SubChannel,
  206.                                        @CDB,
  207.                                        6,
  208.                                        DataBuff,
  209.                                        DataSize,
  210.                                        NIL,
  211.                                        0,
  212.                                        NIL                 );
  213.  
  214. END;  { SAL_S2PrinterRecoverData }
  215.  
  216. {────────────────────────────────────────────────────────────────────────────}
  217.  
  218. This command issues the PRINTER SLEW AND PRINT.
  219.  
  220. (*-
  221.  
  222. [FUNCTION]
  223.  
  224. Function  SAL_S2PrinterSlewPrint(      Bus         : BYTE;
  225.                                     SubChannel  : BYTE;
  226.                                     Target      : BYTE;
  227.                                     Lun         : BYTE;
  228.                                     Flags       : BYTE;
  229.                                     SlewVal     : BYTE;
  230.                                     DataSize    : LONGINT;
  231.                                     DataBuff    : Pointer     ): TError;
  232.  
  233. [PARAMETERS]
  234.  
  235. Bus         ?
  236. SubChannel  ?
  237. Target      Device Target ID
  238. Lun         Device Logical Unit Number
  239. Flags       ?
  240. SlewVal     ?
  241. DataSize    Size of Data Buffer
  242. DataBuff    Pointer to Data Buffer
  243.  
  244. [RETURNS]
  245.  
  246. [DESCRIPTION]
  247.  
  248. This command issues the PRINTER SLEW AND PRINT.
  249.  
  250. [SEE-ALSO]
  251.  
  252. [EXAMPLE]
  253.  
  254. -*)
  255.  
  256. Function  SAL_S2PrinterSlewPrint(      Bus         : BYTE;
  257.                                     SubChannel  : BYTE;
  258.                                     Target      : BYTE;
  259.                                     Lun         : BYTE;
  260.                                     Flags       : BYTE;
  261.                                     SlewVal     : BYTE;
  262.                                     DataSize    : LONGINT;
  263.                                     DataBuff    : Pointer     ): TError;
  264.  
  265. Var
  266.   CDB : TCDB;
  267.  
  268. BEGIN
  269.  
  270.   HM_CDB6Load(   @CDB,
  271.                  $0B,
  272.                  Flags,
  273.                  SlewVal,
  274.                  T4Byte( DataSize )[2],
  275.                  T4Byte( DataSize )[1],
  276.                  0                         );
  277.  
  278.   SAL_S2PrinterSlewPrint  :=HM_ExecSCSI(  ES_Poll+ES_Write,
  279.                                        Target,
  280.                                        Lun,
  281.                                        Channel,
  282.                                        SubChannel,
  283.                                        @CDB,
  284.                                        6,
  285.                                        DataBuff,
  286.                                        DataSize,
  287.                                        NIL,
  288.                                        0,
  289.                                        NIL                 );
  290.  
  291. END;  { SAL_S2PrinterSlewPrint }
  292.  
  293. {────────────────────────────────────────────────────────────────────────────}
  294.  
  295. This command issues the PRINTER STOP PRINT.
  296.  
  297. (*-
  298.  
  299. [FUNCTION]
  300.  
  301. Function  SAL_S2PrinterStopPrint(      Bus         : BYTE;
  302.                                     SubChannel  : BYTE;
  303.                                     Target      : BYTE;
  304.                                     Lun         : BYTE;
  305.                                     Flags       : BYTE;
  306.                                     VendorByte  : BYTE        ): TError;
  307.  
  308. [PARAMETERS]
  309.  
  310. Bus         ?
  311. SubChannel  ?
  312. Target      Device Target ID
  313. Lun         Device Logical Unit Number
  314. Flags       ?
  315. VendorByte  ?
  316.  
  317. [RETURNS]
  318.  
  319. [DESCRIPTION]
  320.  
  321. This command issues the PRINTER STOP PRINT.
  322.  
  323. [SEE-ALSO]
  324.  
  325. [EXAMPLE]
  326.  
  327. -*)
  328.  
  329. Function  SAL_S2PrinterStopPrint(      Bus         : BYTE;
  330.                                     SubChannel  : BYTE;
  331.                                     Target      : BYTE;
  332.                                     Lun         : BYTE;
  333.                                     Flags       : BYTE;
  334.                                     VendorByte  : BYTE        ): TError;
  335.  
  336. Var
  337.   CDB : TCDB;
  338.  
  339. BEGIN
  340.  
  341.   HM_CDB6Load(   @CDB,
  342.                  $1B,
  343.                  Flags,
  344.                  VendorByte,
  345.                  0,
  346.                  0,
  347.                  0                         );
  348.  
  349.   SAL_S2PrinterStopPrint:=HM_ExecSCSI(  ES_Poll+ES_Read,
  350.                                      Target,
  351.                                      Lun,
  352.                                      Channel,
  353.                                      SubChannel,
  354.                                      @CDB,
  355.                                      6,
  356.                                      NIL,
  357.                                      0,
  358.                                      NIL,
  359.                                      0,
  360.                                      NIL                 );
  361.  
  362. END;  { SAL_S2PrinterStopPrint }
  363.  
  364. {────────────────────────────────────────────────────────────────────────────}
  365.  
  366. (*-
  367.  
  368. [FUNCTION]
  369.  
  370. Function  SAL_S2PrinterSyncBuffer(     Bus         : BYTE;
  371.                                     SubChannel  : BYTE;
  372.                                     Target      : BYTE;
  373.                                     Lun         : BYTE;
  374.                                     Flags       : BYTE        ): TError;
  375.  
  376. [PARAMETERS]
  377.  
  378. Bus         ?
  379. SubChannel  ?
  380. Target      Device Target ID
  381. Lun         Device Logical Unit Number
  382. Flags       ?
  383.  
  384. [RETURNS]
  385.  
  386. [DESCRIPTION]
  387.  
  388. This command issues the PRINTER SYNCHRONIZE BUFFER.
  389.  
  390. [SEE-ALSO]
  391.  
  392. [EXAMPLE]
  393.  
  394. -*)
  395.  
  396. Function  SAL_S2PrinterSyncBuffer(     Bus         : BYTE;
  397.                                     SubChannel  : BYTE;
  398.                                     Target      : BYTE;
  399.                                     Lun         : BYTE;
  400.                                     Flags       : BYTE        ): TError;
  401.  
  402. Var
  403.   CDB : TCDB;
  404.  
  405. BEGIN
  406.  
  407.   HM_CDB6Load(   @CDB,
  408.                  $10,
  409.                  Flags,
  410.                  0,
  411.                  0,
  412.                  0,
  413.                  0                         );
  414.  
  415.   SAL_S2PrinterSyncBuffer :=HM_ExecSCSI(  ES_Poll+ES_Read,
  416.                                        Target,
  417.                                        Lun,
  418.                                        Channel,
  419.                                        SubChannel,
  420.                                        @CDB,
  421.                                        6,
  422.                                        NIL,
  423.                                        0,
  424.                                        NIL,
  425.                                        0,
  426.                                        NIL                 );
  427.  
  428. END;  { SAL_S2PrinterSyncBuffer }
  429.  
  430.  
  431. {────────────────────────────────────────────────────────────────────────────}
  432.  
  433.  
  434. {----------------------------}
  435. { SCSI-2 Processor Functions }
  436. {----------------------------}
  437.  
  438. {────────────────────────────────────────────────────────────────────────────}
  439.  
  440. (*-
  441.  
  442. [FUNCTION]
  443.  
  444. Function  SAL_S2ProcSend(              Bus         : BYTE;
  445.                                     SubChannel  : BYTE;
  446.                                     Target      : BYTE;
  447.                                     Lun         : BYTE;
  448.                                     Flags       : BYTE;
  449.                                     DataSize    : LONGINT;
  450.                                     DataBuff    : Pointer     ): TError;
  451.  
  452. [PARAMETERS]
  453.  
  454. Bus         ?
  455. SubChannel  ?
  456. Target      Device Target ID
  457. Lun         Device Logical Unit Number
  458. Flags       ?
  459. DataSize    Size of Data Buffer
  460. DataBuff    Pointer to Data Buffer
  461.  
  462. [RETURNS]
  463.  
  464. [DESCRIPTION]
  465.  
  466. This command issues the PROCESSOR SEND command.
  467.  
  468. [SEE-ALSO]
  469.  
  470. [EXAMPLE]
  471.  
  472. -*)
  473.  
  474. Function  SAL_S2ProcSend(              Bus         : BYTE;
  475.                                     SubChannel  : BYTE;
  476.                                     Target      : BYTE;
  477.                                     Lun         : BYTE;
  478.                                     Flags       : BYTE;
  479.                                     DataSize    : LONGINT;
  480.                                     DataBuff    : Pointer     ): TError;
  481.  
  482. Var
  483.   CDB : TCDB;
  484.  
  485. BEGIN
  486.  
  487.   HM_CDB6Load(   @CDB,
  488.                  $08,
  489.                  Flags,
  490.                  T4Byte( DataSize )[3],
  491.                  T4Byte( DataSize )[2],
  492.                  T4Byte( DataSize )[1],
  493.                  0                         );
  494.  
  495.   SAL_S2ProcSend   :=       HM_ExecSCSI(  ES_Poll+ES_Write,
  496.                                        Target,
  497.                                        Lun,
  498.                                        Channel,
  499.                                        SubChannel,
  500.                                        @CDB,
  501.                                        6,
  502.                                        DataBuff,
  503.                                        DataSize,
  504.                                        NIL,
  505.                                        0,
  506.                                        NIL                 );
  507.  
  508. END;  { SAL_S2ProcSend }
  509.  
  510. {────────────────────────────────────────────────────────────────────────────}
  511.  
  512. (*-
  513.  
  514. [FUNCTION]
  515.  
  516. Function  SAL_S2ProcReceive(           Bus         : BYTE;
  517.                                     SubChannel  : BYTE;
  518.                                     Target      : BYTE;
  519.                                     Lun         : BYTE;
  520.                                     Flags       : BYTE;
  521.                                     DataSize    : LONGINT;
  522.                                     DataBuff    : Pointer     ): TError;
  523.  
  524. [PARAMETERS]
  525.  
  526. Bus         ?
  527. SubChannel  ?
  528. Target      Device Target ID
  529. Lun         Device Logical Unit Number
  530. Flags       ?
  531. DataSize    Size of Data Buffer
  532. DataBuff    Pointer to Data Buffer
  533.  
  534. [RETURNS]
  535.  
  536. [DESCRIPTION]
  537.  
  538. This command issues the PROCESSOR RECEIVE command.
  539.  
  540. [SEE-ALSO]
  541.  
  542. [EXAMPLE]
  543.  
  544. -*)
  545.  
  546. Function  SAL_S2ProcReceive(           Bus         : BYTE;
  547.                                     SubChannel  : BYTE;
  548.                                     Target      : BYTE;
  549.                                     Lun         : BYTE;
  550.                                     Flags       : BYTE;
  551.                                     DataSize    : LONGINT;
  552.                                     DataBuff    : Pointer     ): TError;
  553.  
  554. Var
  555.   CDB : TCDB;
  556.  
  557. BEGIN
  558.  
  559.   HM_CDB6Load(   @CDB,
  560.                  $0A,
  561.                  Flags,
  562.                  T4Byte( DataSize )[3],
  563.                  T4Byte( DataSize )[2],
  564.                  T4Byte( DataSize )[1],
  565.                  0                         );
  566.  
  567.   SAL_S2ProcReceive:=       HM_ExecSCSI(  ES_Poll+ES_Read,
  568.                                        Target,
  569.                                        Lun,
  570.                                        Channel,
  571.                                        SubChannel,
  572.                                        @CDB,
  573.                                        6,
  574.                                        DataBuff,
  575.                                        DataSize,
  576.                                        NIL,
  577.                                        0,
  578.                                        NIL                 );
  579.  
  580. END;  { SAL_S2ProcReceive }
  581.  
  582. {────────────────────────────────────────────────────────────────────────────}
  583.  
  584. (*-
  585.  
  586. [FUNCTION]
  587.  
  588. Function  SAL_S2SeqErase(              Bus         : BYTE;
  589.                                     SubChannel  : BYTE;
  590.                                     Target      : BYTE;
  591.                                     Lun         : BYTE;
  592.                                     Flags       : BYTE        ): TError;
  593.  
  594. [PARAMETERS]
  595.  
  596. Bus         ?
  597. SubChannel  ?
  598. Target      Device Target ID
  599. Lun         Device Logical Unit Number
  600. Flags       ?
  601.  
  602. [RETURNS]
  603.  
  604. [DESCRIPTION]
  605.  
  606. This command issues the SEQUENTIAL ERASE command.
  607.  
  608. [SEE-ALSO]
  609.  
  610. [EXAMPLE]
  611.  
  612. -*)
  613.  
  614. Function  SAL_S2SeqErase(              Bus         : BYTE;
  615.                                     SubChannel  : BYTE;
  616.                                     Target      : BYTE;
  617.                                     Lun         : BYTE;
  618.                                     Flags       : BYTE        ): TError;
  619.  
  620. Var
  621.   CDB : TCDB;
  622.  
  623. BEGIN
  624.  
  625.   HM_CDB6Load(   @CDB,
  626.                  $19,
  627.                  Flags,
  628.                  0,
  629.                  0,
  630.                  0,
  631.                  0                         );
  632.  
  633.   SAL_S2SeqErase   :=       HM_ExecSCSI(  ES_Poll+ES_Read,
  634.                                        Target,
  635.                                        Lun,
  636.                                        Channel,
  637.                                        SubChannel,
  638.                                        @CDB,
  639.                                        6,
  640.                                        NIL,
  641.                                        0,
  642.                                        NIL,
  643.                                        0,
  644.                                        NIL                 );
  645.  
  646. END;  { SAL_S2SeqErase }
  647.  
  648. {────────────────────────────────────────────────────────────────────────────}
  649.  
  650. (*-
  651.  
  652. [FUNCTION]
  653.  
  654. Function  SAL_S2SeqLoadUnload(         Bus         : BYTE;
  655.                                     SubChannel  : BYTE;
  656.                                     Target      : BYTE;
  657.                                     Lun         : BYTE;
  658.                                     Flags       : BYTE;
  659.                                     Flags2      : BYTE        ): TError;
  660.  
  661. [PARAMETERS]
  662.  
  663. Bus         ?
  664. SubChannel  ?
  665. Target      Device Target ID
  666. Lun         Device Logical Unit Number
  667. Flags       ?
  668. Flags2      ?
  669.  
  670. [RETURNS]
  671.  
  672. [DESCRIPTION]
  673.  
  674. This command issues the SEQUENTIAL LOAD/UNLOAD command.
  675.  
  676. [SEE-ALSO]
  677.  
  678. [EXAMPLE]
  679.  
  680. -*)
  681.  
  682. Function  SAL_S2SeqLoadUnload(         Bus         : BYTE;
  683.                                     SubChannel  : BYTE;
  684.                                     Target      : BYTE;
  685.                                     Lun         : BYTE;
  686.                                     Flags       : BYTE;
  687.                                     Flags2      : BYTE        ): TError;
  688.  
  689. Var
  690.   CDB : TCDB;
  691.  
  692. BEGIN
  693.  
  694.   HM_CDB6Load(   @CDB,
  695.                  $1B,
  696.                  Flags,
  697.                  0,
  698.                  0,
  699.                  Flags2,
  700.                  0                         );
  701.  
  702.   SAL_S2SeqLoadUnload  :=   HM_ExecSCSI(  ES_Poll+ES_Read,
  703.                                        Target,
  704.                                        Lun,
  705.                                        Channel,
  706.                                        SubChannel,
  707.                                        @CDB,
  708.                                        6,
  709.                                        NIL,
  710.                                        0,
  711.                                        NIL,
  712.                                        0,
  713.                                        NIL                 );
  714.  
  715. END;  { SAL_S2SeqLoadUnload }
  716.  
  717. {────────────────────────────────────────────────────────────────────────────}
  718.  
  719. (*-
  720.  
  721. [FUNCTION]
  722.  
  723. Function  SAL_S2SeqLocate(             Bus         : BYTE;
  724.                                     SubChannel  : BYTE;
  725.                                     Target      : BYTE;
  726.                                     Lun         : BYTE;
  727.                                     Flags       : BYTE;
  728.                                     LBA         : LONGINT;
  729.                                     Partition   : BYTE        ): TError;
  730.  
  731. [PARAMETERS]
  732.  
  733. Bus         ?
  734. SubChannel  ?
  735. Target      Device Target ID
  736. Lun         Device Logical Unit Number
  737. Flags       ?
  738. LBS         Logical Block Size
  739. Partition   Partition Number
  740.  
  741. [RETURNS]
  742.  
  743. [DESCRIPTION]
  744.  
  745. This command issues the SEQUENTIAL LOCATE command.
  746.  
  747. [SEE-ALSO]
  748.  
  749. [EXAMPLE]
  750.  
  751. -*)
  752.  
  753. Function  SAL_S2SeqLocate(             Bus         : BYTE;
  754.                                     SubChannel  : BYTE;
  755.                                     Target      : BYTE;
  756.                                     Lun         : BYTE;
  757.                                     Flags       : BYTE;
  758.                                     LBA         : LONGINT;
  759.                                     Partition   : BYTE        ): TError;
  760.  
  761. Var
  762.   CDB : TCDB;
  763.  
  764. BEGIN
  765.  
  766.   HM_CDB10Load(  @CDB,
  767.                  $2B,
  768.                  Flags,
  769.                  0,
  770.                  T4Byte( LBA )[4],
  771.                  T4Byte( LBA )[3],
  772.                  T4Byte( LBA )[2],
  773.                  T4Byte( LBA )[1],
  774.                  0,
  775.                  Partition,
  776.                  0                         );
  777.  
  778.   SAL_S2SeqLocate   :=      HM_ExecSCSI(  ES_Poll+ES_Read,
  779.                                        Target,
  780.                                        Lun,
  781.                                        Channel,
  782.                                        SubChannel,
  783.                                        @CDB,
  784.                                        10,
  785.                                        NIL,
  786.                                        0,
  787.                                        NIL,
  788.                                        0,
  789.                                        NIL                 );
  790.  
  791. END;  { SAL_S2SeqLocate }
  792.  
  793. {────────────────────────────────────────────────────────────────────────────}
  794.  
  795. (*-
  796.  
  797. [FUNCTION]
  798.  
  799. Function  SAL_S2SeqRead(               Bus         : BYTE;
  800.                                     SubChannel  : BYTE;
  801.                                     Target      : BYTE;
  802.                                     Lun         : BYTE;
  803.                                     Flags       : BYTE;
  804.                                     DataSize    : LONGINT;
  805.                                     DataBuff    : Pointer     ): TError;
  806.  
  807. [PARAMETERS]
  808.  
  809. Bus         ?
  810. SubChannel  ?
  811. Target      Device Target ID
  812. Lun         Device Logical Unit Number
  813. Flags       ?
  814. DataSize    Size of Data Buffer
  815. DataBuff    Pointer to Data Buffer
  816.  
  817. [RETURNS]
  818.  
  819. [DESCRIPTION]
  820.  
  821. This command issues the SEQUENTIAL READ command.
  822.  
  823. [SEE-ALSO]
  824.  
  825. [EXAMPLE]
  826.  
  827. -*)
  828.  
  829. Function  SAL_S2SeqRead(               Bus         : BYTE;
  830.                                     SubChannel  : BYTE;
  831.                                     Target      : BYTE;
  832.                                     Lun         : BYTE;
  833.                                     Flags       : BYTE;
  834.                                     DataSize    : LONGINT;
  835.                                     DataBuff    : Pointer     ): TError;
  836.  
  837. Var
  838.   CDB : TCDB;
  839.  
  840. BEGIN
  841.  
  842.   HM_CDB6Load(   @CDB,
  843.                  $08,
  844.                  Flags,
  845.                  T4Byte( DataSize )[3],
  846.                  T4Byte( DataSize )[2],
  847.                  T4Byte( DataSize )[1],
  848.                  0                         );
  849.  
  850.   SAL_S2SeqRead    :=       HM_ExecSCSI(  ES_Poll+ES_Read,
  851.                                        Target,
  852.                                        Lun,
  853.                                        Channel,
  854.                                        SubChannel,
  855.                                        @CDB,
  856.                                        6,
  857.                                        DataBuff,
  858.                                        DataSize,
  859.                                        NIL,
  860.                                        0,
  861.                                        NIL                 );
  862.  
  863. END;  { SAL_S2SeqRead }
  864.  
  865. {────────────────────────────────────────────────────────────────────────────}
  866.  
  867. (*-
  868.  
  869. [FUNCTION]
  870.  
  871. Function  SAL_S2SeqReadBlockLimits(    Bus         : BYTE;
  872.                                     SubChannel  : BYTE;
  873.                                     Target      : BYTE;
  874.                                     Lun         : BYTE;
  875.                                     Flags       : BYTE;
  876.                                     DataBuff    : Pointer     ): TError;
  877.  
  878. [PARAMETERS]
  879.  
  880. Bus         ?
  881. SubChannel  ?
  882. Target      Device Target ID
  883. Lun         Device Logical Unit Number
  884. Flags       ?
  885. DataBuff    Pointer to Data Buffer
  886.  
  887. [RETURNS]
  888.  
  889. [DESCRIPTION]
  890.  
  891. This command issues the SEQUENTIAL READ BLOCK LIMITS command.
  892.  
  893. [SEE-ALSO]
  894.  
  895. [EXAMPLE]
  896.  
  897. -*)
  898.  
  899. Function  SAL_S2SeqReadBlockLimits(    Bus         : BYTE;
  900.                                     SubChannel  : BYTE;
  901.                                     Target      : BYTE;
  902.                                     Lun         : BYTE;
  903.                                     Flags       : BYTE;
  904.                                     DataBuff    : Pointer     ): TError;
  905.  
  906. Var
  907.   CDB : TCDB;
  908.  
  909. BEGIN
  910.  
  911.   HM_CDB6Load(   @CDB,
  912.                  $08,
  913.                  Flags,
  914.                  0,
  915.                  0,
  916.                  0,
  917.                  0                         );
  918.  
  919.   SAL_S2SeqReadBlockLimits:=HM_ExecSCSI(  ES_Poll+ES_Read,
  920.                                        Target,
  921.                                        Lun,
  922.                                        Channel,
  923.                                        SubChannel,
  924.                                        @CDB,
  925.                                        6,
  926.                                        DataBuff,
  927.                                        6,
  928.                                        NIL,
  929.                                        0,
  930.                                        NIL                 );
  931.  
  932. END;  { SAL_S2SeqReadBlockLimits }
  933.  
  934. {────────────────────────────────────────────────────────────────────────────}
  935.  
  936. (*-
  937.  
  938. [FUNCTION]
  939.  
  940. Function  SAL_S2SeqReadPosition(       Bus         : BYTE;
  941.                                     SubChannel  : BYTE;
  942.                                     Target      : BYTE;
  943.                                     Lun         : BYTE;
  944.                                     Flags       : BYTE;
  945.                                     DataBuff    : Pointer     ): TError;
  946.  
  947. [PARAMETERS]
  948.  
  949. Bus         ?
  950. SubChannel  ?
  951. Target      Device Target ID
  952. Lun         Device Logical Unit Number
  953. Flags       ?
  954. DataBuff    Pointer to Data Buffer
  955.  
  956. [RETURNS]
  957.  
  958. [DESCRIPTION]
  959.  
  960. This command issues the SEQUENTIAL READ POSITION command.
  961.  
  962. [SEE-ALSO]
  963.  
  964. [EXAMPLE]
  965.  
  966. -*)
  967.  
  968. Function  SAL_S2SeqReadPosition(       Bus         : BYTE;
  969.                                     SubChannel  : BYTE;
  970.                                     Target      : BYTE;
  971.                                     Lun         : BYTE;
  972.                                     Flags       : BYTE;
  973.                                     DataBuff    : Pointer     ): TError;
  974.  
  975. Var
  976.   CDB : TCDB;
  977.  
  978. BEGIN
  979.  
  980.   HM_CDB10Load(  @CDB,
  981.                  $34,
  982.                  Flags,
  983.                  0,
  984.                  0,
  985.                  0,
  986.                  0,
  987.                  0,
  988.                  0,
  989.                  0,
  990.                  0                   );
  991.  
  992.   SAL_S2SeqReadPosition  := HM_ExecSCSI(  ES_Poll+ES_Read,
  993.                                        Target,
  994.                                        Lun,
  995.                                        Channel,
  996.                                        SubChannel,
  997.                                        @CDB,
  998.                                        6,
  999.                                        DataBuff,
  1000.                                        20,
  1001.                                        NIL,
  1002.                                        0,
  1003.                                        NIL                 );
  1004.  
  1005. END;  { SAL_S2SeqReadPosition }
  1006.  
  1007. {────────────────────────────────────────────────────────────────────────────}
  1008.  
  1009. (*-
  1010.  
  1011. [FUNCTION]
  1012.  
  1013. Function  SAL_S2SeqReadReverse(        Bus         : BYTE;
  1014.                                     SubChannel  : BYTE;
  1015.                                     Target      : BYTE;
  1016.                                     Lun         : BYTE;
  1017.                                     Flags       : BYTE;
  1018.                                     DataSize    : LONGINT;
  1019.                                     DataBuff    : Pointer     ): TError;
  1020.  
  1021. [PARAMETERS]
  1022.  
  1023. Bus         ?
  1024. SubChannel  ?
  1025. Target      Device Target ID
  1026. Lun         Device Logical Unit Number
  1027. Flags       ?
  1028. DataSize    Size of Data Buffer
  1029. DataBuff    Pointer to Data Buffer
  1030.  
  1031. [RETURNS]
  1032.  
  1033. [DESCRIPTION]
  1034.  
  1035. This command issues the SEQUENTIAL READ REVERSE command.
  1036.  
  1037. [SEE-ALSO]
  1038.  
  1039. [EXAMPLE]
  1040.  
  1041. -*)
  1042.  
  1043. Var
  1044.   CDB : TCDB;
  1045.  
  1046. BEGIN
  1047.  
  1048.   HM_CDB6Load(   @CDB,
  1049.                  $0F,
  1050.                  Flags,
  1051.                  T4Byte( DataSize )[3],
  1052.                  T4Byte( DataSize )[2],
  1053.                  T4Byte( DataSize )[1],
  1054.                  0                         );
  1055.  
  1056.   SAL_S2SeqReadReverse:=    HM_ExecSCSI(  ES_Poll+ES_Read,
  1057.                                        Target,
  1058.                                        Lun,
  1059.                                        Channel,
  1060.                                        SubChannel,
  1061.                                        @CDB,
  1062.                                        6,
  1063.                                        DataBuff,
  1064.                                        DataSize,
  1065.                                        NIL,
  1066.                                        0,
  1067.                                        NIL                 );
  1068.  
  1069. END;  { SAL_S2SeqReadReverse }
  1070.  
  1071. {────────────────────────────────────────────────────────────────────────────}
  1072.  
  1073. (*-
  1074.  
  1075. [FUNCTION]
  1076.  
  1077. Function  SAL_S2SeqRecoverData(        Bus         : BYTE;
  1078.                                     SubChannel  : BYTE;
  1079.                                     Target      : BYTE;
  1080.                                     Lun         : BYTE;
  1081.                                     Flags       : BYTE;
  1082.                                     DataSize    : LONGINT;
  1083.                                     DataBuff    : Pointer     ): TError;
  1084.  
  1085. [PARAMETERS]
  1086.  
  1087. Bus         ?
  1088. SubChannel  ?
  1089. Target      Device Target ID
  1090. Lun         Device Logical Unit Number
  1091. Flags       ?
  1092. DataSize    Size of Data Buffer
  1093. DataBuff    Pointer to Data Buffer
  1094.  
  1095. [RETURNS]
  1096.  
  1097. [DESCRIPTION]
  1098.  
  1099. This command issues the SEQUENTIAL RECOVER BUFFERED DATA command.
  1100.  
  1101. [SEE-ALSO]
  1102.  
  1103. [EXAMPLE]
  1104.  
  1105. -*)
  1106.  
  1107. Function  SAL_S2SeqRecoverData(        Bus         : BYTE;
  1108.                                     SubChannel  : BYTE;
  1109.                                     Target      : BYTE;
  1110.                                     Lun         : BYTE;
  1111.                                     Flags       : BYTE;
  1112.                                     DataSize    : LONGINT;
  1113.                                     DataBuff    : Pointer     ): TError;
  1114.  
  1115. Var
  1116.   CDB : TCDB;
  1117.  
  1118. BEGIN
  1119.  
  1120.   HM_CDB6Load(   @CDB,
  1121.                  $14,
  1122.                  Flags,
  1123.                  T4Byte( DataSize )[3],
  1124.                  T4Byte( DataSize )[2],
  1125.                  T4Byte( DataSize )[1],
  1126.                  0                         );
  1127.  
  1128.   SAL_S2SeqRecoverData   := HM_ExecSCSI(  ES_Poll+ES_Read,
  1129.                                        Target,
  1130.                                        Lun,
  1131.                                        Channel,
  1132.                                        SubChannel,
  1133.                                        @CDB,
  1134.                                        6,
  1135.                                        DataBuff,
  1136.                                        DataSize,
  1137.                                        NIL,
  1138.                                        0,
  1139.                                        NIL                 );
  1140.  
  1141. END;  { SAL_S2SeqRecoverData }
  1142.  
  1143. {────────────────────────────────────────────────────────────────────────────}
  1144.  
  1145. (*-
  1146.  
  1147. [FUNCTION]
  1148.  
  1149. Function  SAL_S2SeqReleaseUnit(        Bus         : BYTE;
  1150.                                     SubChannel  : BYTE;
  1151.                                     Target      : BYTE;
  1152.                                     Lun         : BYTE;
  1153.                                     Flags       : BYTE        ): TError;
  1154.  
  1155. [PARAMETERS]
  1156.  
  1157. Bus         ?
  1158. SubChannel  ?
  1159. Target      Device Target ID
  1160. Lun         Device Logical Unit Number
  1161. Flags       ?
  1162.  
  1163. [RETURNS]
  1164.  
  1165. [DESCRIPTION]
  1166.  
  1167. This command issues the SEQUENTIAL RELEASE UNIT command.
  1168.  
  1169. [SEE-ALSO]
  1170.  
  1171. [EXAMPLE]
  1172.  
  1173. -*)
  1174.  
  1175. Function  SAL_S2SeqReleaseUnit(        Bus         : BYTE;
  1176.                                     SubChannel  : BYTE;
  1177.                                     Target      : BYTE;
  1178.                                     Lun         : BYTE;
  1179.                                     Flags       : BYTE        ): TError;
  1180.  
  1181. Var
  1182.   CDB : TCDB;
  1183.  
  1184. BEGIN
  1185.  
  1186.   HM_CDB6Load(   @CDB,
  1187.                  $17,
  1188.                  Flags,
  1189.                  0,
  1190.                  0,
  1191.                  0,
  1192.                  0                         );
  1193.  
  1194.   SAL_S2SeqReleaseUnit   := HM_ExecSCSI(  ES_Poll+ES_Read,
  1195.                                        Target,
  1196.                                        Lun,
  1197.                                        Channel,
  1198.                                        SubChannel,
  1199.                                        @CDB,
  1200.                                        6,
  1201.                                        NIL,
  1202.                                        0,
  1203.                                        NIL,
  1204.                                        0,
  1205.                                        NIL                 );
  1206.  
  1207. END;  { SAL_S2SeqReleaseUnit }
  1208.  
  1209. {────────────────────────────────────────────────────────────────────────────}
  1210.  
  1211. (*-
  1212.  
  1213. [FUNCTION]
  1214.  
  1215. Function  SAL_S2SeqReserveUnit(        Bus         : BYTE;
  1216.                                     SubChannel  : BYTE;
  1217.                                     Target      : BYTE;
  1218.                                     Lun         : BYTE;
  1219.                                     Flags       : BYTE        ): TError;
  1220.  
  1221. [PARAMETERS]
  1222.  
  1223. Bus         ?
  1224. SubChannel  ?
  1225. Target      Device Target ID
  1226. Lun         Device Logical Unit Number
  1227. Flags       ?
  1228.  
  1229. [RETURNS]
  1230.  
  1231. [DESCRIPTION]
  1232.  
  1233. This command issues the SEQUENTIAL RESERVE UNIT command.
  1234.  
  1235. [SEE-ALSO]
  1236.  
  1237. [EXAMPLE]
  1238.  
  1239. -*)
  1240.  
  1241. Function  SAL_S2SeqReserveUnit(        Bus         : BYTE;
  1242.                                     SubChannel  : BYTE;
  1243.                                     Target      : BYTE;
  1244.                                     Lun         : BYTE;
  1245.                                     Flags       : BYTE        ): TError;
  1246.  
  1247. Var
  1248.   CDB : TCDB;
  1249.  
  1250. BEGIN
  1251.  
  1252.   HM_CDB6Load(   @CDB,
  1253.                  $16,
  1254.                  Flags,
  1255.                  0,
  1256.                  0,
  1257.                  0,
  1258.                  0                         );
  1259.  
  1260.   SAL_S2SeqReserveUnit   := HM_ExecSCSI(  ES_Poll+ES_Read,
  1261.                                        Target,
  1262.                                        Lun,
  1263.                                        Channel,
  1264.                                        SubChannel,
  1265.                                        @CDB,
  1266.                                        6,
  1267.                                        NIL,
  1268.                                        0,
  1269.                                        NIL,
  1270.                                        0,
  1271.                                        NIL                 );
  1272.  
  1273. END;  { SAL_S2SeqReserveUnit }
  1274.  
  1275. {────────────────────────────────────────────────────────────────────────────}
  1276.  
  1277. (*-
  1278.  
  1279. [FUNCTION]
  1280.  
  1281. Function  SAL_S2SeqRewind(             Bus         : BYTE;
  1282.                                     SubChannel  : BYTE;
  1283.                                     Target      : BYTE;
  1284.                                     Lun         : BYTE;
  1285.                                     Flags       : BYTE        ): TError;
  1286.  
  1287. [PARAMETERS]
  1288.  
  1289. Bus         ?
  1290. SubChannel  ?
  1291. Target      Device Target ID
  1292. Lun         Device Logical Unit Number
  1293. Flags       ?
  1294.  
  1295. [RETURNS]
  1296.  
  1297. [DESCRIPTION]
  1298.  
  1299. This command issues the SEQUENTIAL REWIND command.
  1300.  
  1301. [SEE-ALSO]
  1302.  
  1303. [EXAMPLE]
  1304.  
  1305. -*)
  1306.  
  1307. Function  SAL_S2SeqRewind(             Bus         : BYTE;
  1308.                                     SubChannel  : BYTE;
  1309.                                     Target      : BYTE;
  1310.                                     Lun         : BYTE;
  1311.                                     Flags       : BYTE        ): TError;
  1312.  
  1313. Var
  1314.   CDB : TCDB;
  1315.  
  1316. BEGIN
  1317.  
  1318.   HM_CDB6Load(   @CDB,
  1319.                  $01,
  1320.                  Flags,
  1321.                  0,
  1322.                  0,
  1323.                  0,
  1324.                  0                         );
  1325.  
  1326.   SAL_S2SeqRewind        := HM_ExecSCSI(  ES_Poll+ES_Read,
  1327.                                        Target,
  1328.                                        Lun,
  1329.                                        Channel,
  1330.                                        SubChannel,
  1331.                                        @CDB,
  1332.                                        6,
  1333.                                        NIL,
  1334.                                        0,
  1335.                                        NIL,
  1336.                                        0,
  1337.                                        NIL                 );
  1338.  
  1339. END;  { SAL_S2SeqRewind }
  1340.  
  1341. {────────────────────────────────────────────────────────────────────────────}
  1342.  
  1343. (*-
  1344.  
  1345. [FUNCTION]
  1346.  
  1347. Function  SAL_S2SeqSpace(              Bus         : BYTE;
  1348.                                     SubChannel  : BYTE;
  1349.                                     Target      : BYTE;
  1350.                                     Lun         : BYTE;
  1351.                                     Flags       : BYTE;
  1352.                                     Count       : LONGINT     ): TError;
  1353.  
  1354. [PARAMETERS]
  1355.  
  1356. Bus         ?
  1357. SubChannel  ?
  1358. Target      Device Target ID
  1359. Lun         Device Logical Unit Number
  1360. Flags       ?
  1361. Count       Number of Spaces to Space
  1362.  
  1363. [RETURNS]
  1364.  
  1365. [DESCRIPTION]
  1366.  
  1367. This command issues the SEQUENTIAL SPACE command.
  1368.  
  1369. [SEE-ALSO]
  1370.  
  1371. [EXAMPLE]
  1372.  
  1373. -*)
  1374.  
  1375. Function  SAL_S2SeqSpace(              Bus         : BYTE;
  1376.                                     SubChannel  : BYTE;
  1377.                                     Target      : BYTE;
  1378.                                     Lun         : BYTE;
  1379.                                     Flags       : BYTE;
  1380.                                     Count       : LONGINT     ): TError;
  1381.  
  1382. Var
  1383.   CDB : TCDB;
  1384.  
  1385. BEGIN
  1386.  
  1387.   HM_CDB6Load(   @CDB,
  1388.                  $01,
  1389.                  Flags,
  1390.                  T4Byte( Count )[3],
  1391.                  T4Byte( Count )[2],
  1392.                  T4Byte( Count )[1],
  1393.                  0                         );
  1394.  
  1395.   SAL_S2SeqSpace         := HM_ExecSCSI(  ES_Poll+ES_Read,
  1396.                                        Target,
  1397.                                        Lun,
  1398.                                        Channel,
  1399.                                        SubChannel,
  1400.                                        @CDB,
  1401.                                        6,
  1402.                                        NIL,
  1403.                                        0,
  1404.                                        NIL,
  1405.                                        0,
  1406.                                        NIL                 );
  1407.  
  1408. END;  { SAL_S2SeqSpace }
  1409.  
  1410. {────────────────────────────────────────────────────────────────────────────}
  1411.  
  1412. (*-
  1413.  
  1414. [FUNCTION]
  1415.  
  1416. Function  SAL_S2SeqVerify(             Bus         : BYTE;
  1417.                                     SubChannel  : BYTE;
  1418.                                     Target      : BYTE;
  1419.                                     Lun         : BYTE;
  1420.                                     Flags       : BYTE;
  1421.                                     DataSize    : LONGINT;
  1422.                                     DataBuff    : Pointer     ): TError;
  1423.  
  1424. [PARAMETERS]
  1425.  
  1426. Bus         ?
  1427. SubChannel  ?
  1428. Target      Device Target ID
  1429. Lun         Device Logical Unit Number
  1430. Flags       ?
  1431. DataSize    Size of Data Buffer
  1432. DataBuff    Pointer to Data Buffer
  1433.  
  1434. [RETURNS]
  1435.  
  1436. [DESCRIPTION]
  1437.  
  1438. This command issues the SEQUENTIAL VERIFY command.
  1439.  
  1440. [SEE-ALSO]
  1441.  
  1442. [EXAMPLE]
  1443.  
  1444. -*)
  1445.  
  1446. Function  SAL_S2SeqVerify(             Bus         : BYTE;
  1447.                                     SubChannel  : BYTE;
  1448.                                     Target      : BYTE;
  1449.                                     Lun         : BYTE;
  1450.                                     Flags       : BYTE;
  1451.                                     DataSize    : LONGINT;
  1452.                                     DataBuff    : Pointer     ): TError;
  1453.  
  1454. Var
  1455.   CDB : TCDB;
  1456.  
  1457. BEGIN
  1458.  
  1459.   HM_CDB6Load(   @CDB,
  1460.                  $13,
  1461.                  Flags,
  1462.                  T4Byte( DataSize )[3],
  1463.                  T4Byte( DataSize )[2],
  1464.                  T4Byte( DataSize )[1],
  1465.                  0                         );
  1466.  
  1467.   SAL_S2SeqVerify        := HM_ExecSCSI(  ES_Poll+ES_Write,
  1468.                                        Target,
  1469.                                        Lun,
  1470.                                        Channel,
  1471.                                        SubChannel,
  1472.                                        @CDB,
  1473.                                        6,
  1474.                                        DataBuff,
  1475.                                        DataSize,
  1476.                                        NIL,
  1477.                                        0,
  1478.                                        NIL                 );
  1479.  
  1480. END;  { SAL_S2SeqVerify }
  1481.  
  1482. {────────────────────────────────────────────────────────────────────────────}
  1483.  
  1484. (*-
  1485.  
  1486. [FUNCTION]
  1487.  
  1488. Function  SAL_S2SeqWrite(              Bus         : BYTE;
  1489.                                     SubChannel  : BYTE;
  1490.                                     Target      : BYTE;
  1491.                                     Lun         : BYTE;
  1492.                                     Flags       : BYTE;
  1493.                                     DataSize    : LONGINT;
  1494.                                     DataBuff    : Pointer     ): TError;
  1495.  
  1496. [PARAMETERS]
  1497.  
  1498. Bus         ?
  1499. SubChannel  ?
  1500. Target      Device Target ID
  1501. Lun         Device Logical Unit Number
  1502. Flags       ?
  1503. DataSize    Size of Data Buffer
  1504. DataBuff    Pointer to Data Buffer
  1505.  
  1506. [RETURNS]
  1507.  
  1508. [DESCRIPTION]
  1509.  
  1510. This command issues the SEQUENTIAL WRITE command.
  1511.  
  1512. [SEE-ALSO]
  1513.  
  1514. [EXAMPLE]
  1515.  
  1516. -*)
  1517.  
  1518. Function  SAL_S2SeqWrite(              Bus         : BYTE;
  1519.                                     SubChannel  : BYTE;
  1520.                                     Target      : BYTE;
  1521.                                     Lun         : BYTE;
  1522.                                     Flags       : BYTE;
  1523.                                     DataSize    : LONGINT;
  1524.                                     DataBuff    : Pointer     ): TError;
  1525.  
  1526. Var
  1527.   CDB : TCDB;
  1528.  
  1529. BEGIN
  1530.  
  1531.   HM_CDB6Load(   @CDB,
  1532.                  $0A,
  1533.                  Flags,
  1534.                  T4Byte( DataSize )[3],
  1535.                  T4Byte( DataSize )[2],
  1536.                  T4Byte( DataSize )[1],
  1537.                  0                         );
  1538.  
  1539.   SAL_S2SeqWrite         := HM_ExecSCSI(  ES_Poll+ES_Write,
  1540.                                        Target,
  1541.                                        Lun,
  1542.                                        Channel,
  1543.                                        SubChannel,
  1544.                                        @CDB,
  1545.                                        6,
  1546.                                        DataBuff,
  1547.                                        DataSize,
  1548.                                        NIL,
  1549.                                        0,
  1550.                                        NIL                 );
  1551.  
  1552. END;  { SAL_S2SeqWrite }
  1553.  
  1554. {────────────────────────────────────────────────────────────────────────────}
  1555.  
  1556. (*-
  1557.  
  1558. [FUNCTION]
  1559.  
  1560. Function  SAL_S2SeqWriteFilemarks(     Bus         : BYTE;
  1561.                                     SubChannel  : BYTE;
  1562.                                     Target      : BYTE;
  1563.                                     Lun         : BYTE;
  1564.                                     Flags       : BYTE;
  1565.                                     NumMarks    : LONGINT     ): TError;
  1566.  
  1567. [PARAMETERS]
  1568.  
  1569. Bus         ?
  1570. SubChannel  ?
  1571. Target      Device Target ID
  1572. Lun         Device Logical Unit Number
  1573. Flags       ?
  1574. NumMarks    Number of FileMarks to Write
  1575.  
  1576. [RETURNS]
  1577.  
  1578. [DESCRIPTION]
  1579.  
  1580. This command issues the SEQUENTIAL ERASE command.
  1581.  
  1582. [SEE-ALSO]
  1583.  
  1584. [EXAMPLE]
  1585.  
  1586. -*)
  1587.  
  1588. Function  SAL_S2SeqWriteFilemarks(     Bus         : BYTE;
  1589.                                     SubChannel  : BYTE;
  1590.                                     Target      : BYTE;
  1591.                                     Lun         : BYTE;
  1592.                                     Flags       : BYTE;
  1593.                                     NumMarks    : LONGINT     ): TError;
  1594.  
  1595. Var
  1596.   CDB : TCDB;
  1597.  
  1598. BEGIN
  1599.  
  1600.   HM_CDB6Load(   @CDB,
  1601.                  $10,
  1602.                  Flags,
  1603.                  T4Byte( NumMarks )[3],
  1604.                  T4Byte( NumMarks )[2],
  1605.                  T4Byte( NumMarks )[1],
  1606.                  0                         );
  1607.  
  1608.   SAL_S2SeqWriteFilemarks:= HM_ExecSCSI(  ES_Poll+ES_Write,
  1609.                                        Target,
  1610.                                        Lun,
  1611.                                        Channel,
  1612.                                        SubChannel,
  1613.                                        @CDB,
  1614.                                        6,
  1615.                                        NIL,
  1616.                                        0,
  1617.                                        NIL,
  1618.                                        0,
  1619.                                        NIL                 );
  1620.  
  1621. END;  { SAL_S2SeqWriteFilemarks }
  1622.  
  1623. {────────────────────────────────────────────────────────────────────────────}
  1624.  
  1625. {-------------------------}
  1626. { SCSI-2 CD-ROM Functions }
  1627. {-------------------------}
  1628.  
  1629. {────────────────────────────────────────────────────────────────────────────}
  1630.  
  1631. (*-
  1632.  
  1633. [FUNCTION]
  1634.  
  1635. Function  SAL_S2CDPauseResume(         Bus         : BYTE;
  1636.                                     SubChannel  : BYTE;
  1637.                                     Target      : BYTE;
  1638.                                     Lun         : BYTE;
  1639.                                     Flags       : BYTE;
  1640.                                     Flags2      : BYTE        ): TError;
  1641.  
  1642. [PARAMETERS]
  1643.  
  1644. Bus         ?
  1645. SubChannel  ?
  1646. Target      Device Target ID
  1647. Lun         Device Logical Unit Number
  1648. Flags       ?
  1649. Flags2      ?
  1650.  
  1651. [RETURNS]
  1652.  
  1653. [DESCRIPTION]
  1654.  
  1655. This command issues the CD-ROM PAUSE/RESUME command.
  1656.  
  1657. [SEE-ALSO]
  1658.  
  1659. [EXAMPLE]
  1660.  
  1661. -*)
  1662.  
  1663. Function  SAL_S2CDPauseResume(         Bus         : BYTE;
  1664.                                     SubChannel  : BYTE;
  1665.                                     Target      : BYTE;
  1666.                                     Lun         : BYTE;
  1667.                                     Flags       : BYTE;
  1668.                                     Flags2      : BYTE        ): TError;
  1669.  
  1670. Var
  1671.   CDB : TCDB;
  1672.  
  1673. BEGIN
  1674.  
  1675.   HM_CDB10Load(  @CDB,
  1676.                  $4B,
  1677.                  Flags,
  1678.                  0,
  1679.                  0,
  1680.                  0,
  1681.                  0,
  1682.                  0,
  1683.                  0,
  1684.                  Flags2,
  1685.                  0                         );
  1686.  
  1687.   SAL_S2CDPauseResume:=     HM_ExecSCSI(  ES_Poll+ES_Read,
  1688.                                        Target,
  1689.  
  1690.                                        Lun,
  1691.                                        Channel,
  1692.                                        SubChannel,
  1693.                                        @CDB,
  1694.                                        10,
  1695.                                        NIL,
  1696.                                        0,
  1697.                                        NIL,
  1698.                                        0,
  1699.                                        NIL                 );
  1700.  
  1701. END;  { SAL_S2CDPauseResume }
  1702.  
  1703. {────────────────────────────────────────────────────────────────────────────}
  1704.  
  1705. (*-
  1706.  
  1707. [FUNCTION]
  1708.  
  1709. Function  SAL_S2CDPlayAudio10(         Bus         : BYTE;
  1710.                                     SubChannel  : BYTE;
  1711.                                     Target      : BYTE;
  1712.                                     Lun         : BYTE;
  1713.                                     Flags       : BYTE;
  1714.                                     StartLBA    : LONGINT;
  1715.                                     DataSize    : LONGINT     ): TError;
  1716.  
  1717. [PARAMETERS]
  1718.  
  1719. Bus         ?
  1720. SubChannel  ?
  1721. Target      Device Target ID
  1722. Lun         Device Logical Unit Number
  1723. Flags       ?
  1724. StartLBA    ?
  1725. DataSize    ?
  1726.  
  1727. [RETURNS]
  1728.  
  1729. [DESCRIPTION]
  1730.  
  1731. This command issues the CD-ROM PLAY AUDIO 10 command.
  1732.  
  1733. [SEE-ALSO]
  1734.  
  1735. [EXAMPLE]
  1736.  
  1737. -*)
  1738.  
  1739. Function  SAL_S2CDPlayAudio10(         Bus         : BYTE;
  1740.                                     SubChannel  : BYTE;
  1741.                                     Target      : BYTE;
  1742.                                     Lun         : BYTE;
  1743.                                     Flags       : BYTE;
  1744.                                     StartLBA    : LONGINT;
  1745.                                     DataSize    : LONGINT     ): TError;
  1746.  
  1747. Var
  1748.   CDB : TCDB;
  1749.  
  1750. BEGIN
  1751.  
  1752.   HM_CDB10Load(  @CDB,
  1753.                  $45,
  1754.                  Flags,
  1755.                  T4Byte( StartLBA )[4],
  1756.                  T4Byte( StartLBA )[3],
  1757.                  T4Byte( StartLBA )[2],
  1758.                  T4Byte( StartLBA )[1],
  1759.                  0,
  1760.                  T4Byte( DataSize )[2],
  1761.                  T4Byte( DataSize )[1],
  1762.                  0                          );
  1763.  
  1764.   SAL_S2CDPlayAudio10 :=    HM_ExecSCSI(  ES_Poll+ES_Read,
  1765.                                        Target,
  1766.                                        Lun,
  1767.                                        Channel,
  1768.                                        SubChannel,
  1769.                                        @CDB,
  1770.                                        10,
  1771.                                        NIL,
  1772.                                        0,
  1773.                                        NIL,
  1774.                                        0,
  1775.                                        NIL                 );
  1776.  
  1777. END;  { SAL_S2CDPlayAudio10 }
  1778.  
  1779. {────────────────────────────────────────────────────────────────────────────}
  1780.  
  1781. (*-
  1782.  
  1783. [FUNCTION]
  1784.  
  1785. Function  SAL_S2CDPlayAudio12(         Bus         : BYTE;
  1786.                                     SubChannel  : BYTE;
  1787.                                     Target      : BYTE;
  1788.                                     Lun         : BYTE;
  1789.                                     Flags       : BYTE;
  1790.                                     StartLBA    : LONGINT;
  1791.                                     DataSize    : LONGINT     ): TError;
  1792.  
  1793. [PARAMETERS]
  1794.  
  1795. Bus         ?
  1796. SubChannel  ?
  1797. Target      Device Target ID
  1798. Lun         Device Logical Unit Number
  1799. Flags       ?
  1800. StartLBA    ?
  1801. DataSize    ?
  1802.  
  1803. [RETURNS]
  1804.  
  1805. [DESCRIPTION]
  1806.  
  1807. This command issues the CD-ROM PLAY AUDIO 12 command.
  1808.  
  1809. [SEE-ALSO]
  1810.  
  1811. [EXAMPLE]
  1812.  
  1813. -*)
  1814.  
  1815. Function  SAL_S2CDPlayAudio12(         Bus         : BYTE;
  1816.                                     SubChannel  : BYTE;
  1817.                                     Target      : BYTE;
  1818.                                     Lun         : BYTE;
  1819.                                     Flags       : BYTE;
  1820.                                     StartLBA    : LONGINT;
  1821.                                     DataSize    : LONGINT     ): TError;
  1822.  
  1823. Var
  1824.   CDB : TCDB;
  1825.  
  1826. BEGIN
  1827.  
  1828.   HM_CDB10Load(  @CDB,
  1829.                  $45,
  1830.                  Flags,
  1831.                  T4Byte( StartLBA )[4],
  1832.                  T4Byte( StartLBA )[3],
  1833.                  T4Byte( StartLBA )[2],
  1834.                  T4Byte( StartLBA )[1],
  1835.                  0,
  1836.                  T4Byte( DataSize )[4],
  1837.                  T4Byte( DataSize )[3],
  1838.                  T4Byte( DataSize )[2]          );
  1839.  
  1840.   CDB[10] := T4Byte( DataSize )[1];
  1841.   CDB[11] := 0;
  1842.  
  1843.   SAL_S2CDPlayAudio12 :=    HM_ExecSCSI(  ES_Poll+ES_Read,
  1844.                                        Target,
  1845.                                        Lun,
  1846.                                        Channel,
  1847.                                        SubChannel,
  1848.                                        @CDB,
  1849.                                        12,
  1850.                                        NIL,
  1851.                                        0,
  1852.                                        NIL,
  1853.                                        0,
  1854.                                        NIL                 );
  1855.  
  1856. END;  { SAL_S2CDPlayAudio12 }
  1857.  
  1858. {────────────────────────────────────────────────────────────────────────────}
  1859.  
  1860. (*-
  1861.  
  1862. [FUNCTION]
  1863.  
  1864. Function  SAL_S2CDPlayAudioMSF(        Bus         : BYTE;
  1865.                                     SubChannel  : BYTE;
  1866.                                     Target      : BYTE;
  1867.                                     Lun         : BYTE;
  1868.                                     Flags       : BYTE;
  1869.                                     SM,SS,SF    : BYTE;
  1870.                                     EM,ES,EF    : BYTE        ): TError;
  1871.  
  1872. [PARAMETERS]
  1873.  
  1874. Bus         ?
  1875. SubChannel  ?
  1876. Target      Device Target ID
  1877. Lun         Device Logical Unit Number
  1878. Flags       ?
  1879. SM,SS,SF    Starting Min,Sec,Frame
  1880. EM,ES,EF    Ending Min,Sec,Frame
  1881. DataBuff    Pointer to Data Buffer
  1882.  
  1883. [RETURNS]
  1884.  
  1885. [DESCRIPTION]
  1886.  
  1887. This command issues the CD-ROM PLAY AUDIO MSF command.
  1888.  
  1889. [SEE-ALSO]
  1890.  
  1891. [EXAMPLE]
  1892.  
  1893. -*)
  1894.  
  1895. Function  SAL_S2CDPlayAudioMSF(        Bus         : BYTE;
  1896.                                     SubChannel  : BYTE;
  1897.                                     Target      : BYTE;
  1898.                                     Lun         : BYTE;
  1899.                                     Flags       : BYTE;
  1900.                                     SM,SS,SF    : BYTE;
  1901.                                     EM,ES,EF    : BYTE        ): TError;
  1902.  
  1903. Var
  1904.   CDB : TCDB;
  1905.  
  1906. BEGIN
  1907.  
  1908.   HM_CDB10Load(  @CDB,
  1909.                  $47,
  1910.                  Flags,
  1911.                  0,
  1912.                  SM,
  1913.                  SS,
  1914.                  SF,
  1915.                  EM,
  1916.                  ES,
  1917.                  EF,
  1918.                  0                   );
  1919.  
  1920.   SAL_S2CDPlayAudioMSF :=   HM_ExecSCSI(  ES_Poll+ES_Read,
  1921.                                        Target,
  1922.                                        Lun,
  1923.                                        Channel,
  1924.                                        SubChannel,
  1925.                                        @CDB,
  1926.                                        10,
  1927.                                        NIL,
  1928.                                        0,
  1929.                                        NIL,
  1930.                                        0,
  1931.                                        NIL                 );
  1932.  
  1933. END;  { SAL_S2CDPlayAudioMSF }
  1934.  
  1935. {────────────────────────────────────────────────────────────────────────────}
  1936.  
  1937. (*-
  1938.  
  1939. [FUNCTION]
  1940.  
  1941. Function  SAL_S2CDPlayAudioTrackIdx(   Bus         : BYTE;
  1942.                                     SubChannel  : BYTE;
  1943.                                     Target      : BYTE;
  1944.                                     Lun         : BYTE;
  1945.                                     Flags       : BYTE;
  1946.                                     ST,SI       : BYTE;
  1947.                                     ET,EI       : BYTE        ): TError;
  1948.  
  1949. [PARAMETERS]
  1950.  
  1951. Bus         ?
  1952. SubChannel  ?
  1953. Target      Device Target ID
  1954. Lun         Device Logical Unit Number
  1955. Flags       ?
  1956. ST,SI       ?,?
  1957. ET,EI       ?,?
  1958.  
  1959. [RETURNS]
  1960.  
  1961. [DESCRIPTION]
  1962.  
  1963. This command issues the CD-ROM PLAY AUDIO TRACK INDEX.
  1964.  
  1965. [SEE-ALSO]
  1966.  
  1967. [EXAMPLE]
  1968.  
  1969. -*)
  1970.  
  1971. Function  SAL_S2CDPlayAudioTrackIdx(   Bus         : BYTE;
  1972.                                     SubChannel  : BYTE;
  1973.                                     Target      : BYTE;
  1974.                                     Lun         : BYTE;
  1975.                                     Flags       : BYTE;
  1976.                                     ST,SI       : BYTE;
  1977.                                     ET,EI       : BYTE        ): TError;
  1978.  
  1979. Var
  1980.   CDB : TCDB;
  1981.  
  1982. BEGIN
  1983.  
  1984.   HM_CDB10Load(  @CDB,
  1985.                  $48,
  1986.                  Flags,
  1987.                  0,
  1988.                  0,
  1989.                  ST,
  1990.                  SI,
  1991.                  0,
  1992.                  ET,
  1993.                  EI,
  1994.                  0              );
  1995.  
  1996.   SAL_S2CDPlayAudioTrackIdx:=HM_ExecSCSI(  ES_Poll+ES_Read,
  1997.                                        Target,
  1998.                                        Lun,
  1999.                                        Channel,
  2000.                                        SubChannel,
  2001.                                        @CDB,
  2002.                                        10,
  2003.                                        NIL,
  2004.                                        0,
  2005.                                        NIL,
  2006.                                        0,
  2007.                                        NIL                 );
  2008.  
  2009. END;  { SAL_S2CDPlayAudioTrackIdx }
  2010.  
  2011. {────────────────────────────────────────────────────────────────────────────}
  2012.  
  2013. (*-
  2014.  
  2015. [FUNCTION]
  2016.  
  2017. Function  SAL_S2CDPlayAudioTrackRel(   Bus         : BYTE;
  2018.                                     SubChannel  : BYTE;
  2019.                                     Target      : BYTE;
  2020.                                     Lun         : BYTE;
  2021.                                     Flags       : BYTE;
  2022.                                     TrackRelLBA : LONGINT;
  2023.                                     DataSize    : LONGINT     ): TError;
  2024.  
  2025. [PARAMETERS]
  2026.  
  2027. Bus         ?
  2028. SubChannel  ?
  2029. Target      Device Target ID
  2030. Lun         Device Logical Unit Number
  2031. Flags       ?
  2032. TrackRelLBA ?
  2033. DataSize    ?
  2034.  
  2035. [RETURNS]
  2036.  
  2037. [DESCRIPTION]
  2038.  
  2039. This command issues the CD-ROM PLAY AUDIO--TRACK RELATIVE ommand.
  2040.  
  2041. [SEE-ALSO]
  2042.  
  2043. [EXAMPLE]
  2044.  
  2045. -*)
  2046.  
  2047. Function  SAL_S2CDPlayAudioTrackRel(   Bus         : BYTE;
  2048.                                     SubChannel  : BYTE;
  2049.                                     Target      : BYTE;
  2050.                                     Lun         : BYTE;
  2051.                                     Flags       : BYTE;
  2052.                                     TrackRelLBA : LONGINT;
  2053.                                     DataSize    : LONGINT     ): TError;
  2054.  
  2055. Var
  2056.   CDB : TCDB;
  2057.  
  2058. BEGIN
  2059.  
  2060.   HM_CDB10Load(  @CDB,
  2061.                  $49,
  2062.                  Flags,
  2063.                  T4Byte( TrackRelLBA )[4],
  2064.                  T4Byte( TrackRelLBA )[3],
  2065.                  T4Byte( TrackRelLBA )[2],
  2066.                  T4Byte( TrackRelLBA )[1],
  2067.                  0,
  2068.                  T4Byte( DataSize )[2],
  2069.                  T4Byte( DataSize )[1],
  2070.                  0                             );
  2071.  
  2072.   SAL_S2CDPlayAudioTrackRel := HM_ExecSCSI(  ES_Poll+ES_Read,
  2073.                                           Target,
  2074.                                           Lun,
  2075.                                           Channel,
  2076.                                           SubChannel,
  2077.                                           @CDB,
  2078.                                           10,
  2079.                                           NIL,
  2080.                                           0,
  2081.                                           NIL,
  2082.                                           0,
  2083.                                           NIL                 );
  2084.  
  2085. END;  { SAL_S2CDPlayAudioTrackRel }
  2086.  
  2087. {────────────────────────────────────────────────────────────────────────────}
  2088.  
  2089. (*-
  2090.  
  2091. [FUNCTION]
  2092.  
  2093. Function  SAL_S2CDReadCapacity(        Bus         : BYTE;
  2094.                                     SubChannel  : BYTE;
  2095.                                     Target      : BYTE;
  2096.                                     Lun         : BYTE;
  2097.                                     Flags       : BYTE;
  2098.                                     LBA         : LONGINT;
  2099.                                     DataBuff    : Pointer     ): TError;
  2100.  
  2101. [PARAMETERS]
  2102.  
  2103. Bus         ?
  2104. SubChannel  ?
  2105. Target      Device Target ID
  2106. Lun         Device Logical Unit Number
  2107. Flags       ?
  2108. LBA         ?
  2109. DataBuff    Pointer to Data Buffer
  2110.  
  2111. [RETURNS]
  2112.  
  2113. [DESCRIPTION]
  2114.  
  2115. This command issues the CD-ROM READ CAPACITY command.
  2116.  
  2117. [SEE-ALSO]
  2118.  
  2119. [EXAMPLE]
  2120.  
  2121. -*)
  2122.  
  2123. Function  SAL_S2CDReadCapacity(        Bus         : BYTE;
  2124.                                     SubChannel  : BYTE;
  2125.                                     Target      : BYTE;
  2126.                                     Lun         : BYTE;
  2127.                                     Flags       : BYTE;
  2128.                                     LBA         : LONGINT;
  2129.                                     DataBuff    : Pointer     ): TError;
  2130.  
  2131. Var
  2132.   CDB : TCDB;
  2133.  
  2134. BEGIN
  2135.  
  2136.   HM_CDB10Load(  @CDB,
  2137.                  $49,
  2138.                  Flags,
  2139.                  T4Byte( LBA )[4],
  2140.                  T4Byte( LBA )[3],
  2141.                  T4Byte( LBA )[2],
  2142.                  T4Byte( LBA )[1],
  2143.                  0,
  2144.                  0,
  2145.                  0,
  2146.                  0                             );
  2147.  
  2148.   SAL_S2CDReadCapacity :=      HM_ExecSCSI(  ES_Poll+ES_Read,
  2149.                                           Target,
  2150.                                           Lun,
  2151.                                           Channel,
  2152.                                           SubChannel,
  2153.                                           @CDB,
  2154.                                           10,
  2155.                                           DataBuff,
  2156.                                           8,
  2157.                                           NIL,
  2158.                                           0,
  2159.                                           NIL                 );
  2160.  
  2161. END;  { SAL_S2CDReadCapacity }
  2162.  
  2163. {────────────────────────────────────────────────────────────────────────────}
  2164.  
  2165. (*-
  2166.  
  2167. [FUNCTION]
  2168.  
  2169. Function  SAL_S2CDReadHeader(          Bus         : BYTE;
  2170.                                     SubChannel  : BYTE;
  2171.  
  2172.                                     Target      : BYTE;
  2173.                                     Lun         : BYTE;
  2174.                                     Flags       : BYTE;
  2175.                                     LBA         : LONGINT;
  2176.                                     DataSize    : LONGINT;
  2177.                                     DataBuff    : Pointer     ): TError;
  2178.  
  2179. [PARAMETERS]
  2180.  
  2181. Bus         ?
  2182. SubChannel  ?
  2183. Target      Device Target ID
  2184. Lun         Device Logical Unit Number
  2185. Flags       ?
  2186. LBA         ?
  2187. DataSize    Size of Data Buffer
  2188. DataBuff    Pointer to Data Buffer
  2189.  
  2190. [RETURNS]
  2191.  
  2192. [DESCRIPTION]
  2193.  
  2194. This command issues the CD-ROM PAUSE/RESUME command.
  2195.  
  2196. [SEE-ALSO]
  2197.  
  2198. [EXAMPLE]
  2199.  
  2200. -*)
  2201.  
  2202. Function  SAL_S2CDReadHeader(          Bus         : BYTE;
  2203.                                     SubChannel  : BYTE;
  2204.  
  2205.                                     Target      : BYTE;
  2206.                                     Lun         : BYTE;
  2207.                                     Flags       : BYTE;
  2208.                                     LBA         : LONGINT;
  2209.                                     DataSize    : LONGINT;
  2210.                                     DataBuff    : Pointer     ): TError;
  2211.  
  2212. Var
  2213.   CDB : TCDB;
  2214.  
  2215. BEGIN
  2216.  
  2217.   HM_CDB10Load(  @CDB,
  2218.                  $44,
  2219.                  Flags,
  2220.                  T4Byte( LBA )[4],
  2221.                  T4Byte( LBA )[3],
  2222.                  T4Byte( LBA )[2],
  2223.                  T4Byte( LBA )[1],
  2224.                  0,
  2225.                  T4Byte( DataSize )[2],
  2226.                  T4Byte( DataSize )[1],
  2227.                  0                             );
  2228.  
  2229.   SAL_S2CDReadHeader :=        HM_ExecSCSI(  ES_Poll+ES_Read,
  2230.                                           Target,
  2231.                                           Lun,
  2232.                                           Channel,
  2233.                                           SubChannel,
  2234.                                           @CDB,
  2235.                                           10,
  2236.                                           DataBuff,
  2237.                                           DataSize,
  2238.                                           NIL,
  2239.                                           0,
  2240.                                           NIL                 );
  2241.  
  2242. END;  { SAL_S2CDReadHeader }
  2243.  
  2244. {────────────────────────────────────────────────────────────────────────────}
  2245.  
  2246. (*-
  2247.  
  2248. [FUNCTION]
  2249.  
  2250. Function  SAL_S2CDReadSubChannel(      Bus         : BYTE;
  2251.                                     SubChannel  : BYTE;
  2252.                                     Target      : BYTE;
  2253.                                     Lun         : BYTE;
  2254.                                     Flags       : BYTE;
  2255.                                     Flags2      : BYTE;
  2256.                                     LBA         : LONGINT;
  2257.                                     DataSize    : LONGINT;
  2258.                                     DataBuff    : Pointer     ): TError;
  2259.  
  2260. [PARAMETERS]
  2261.  
  2262. Bus         ?
  2263. SubChannel  ?
  2264. Target      Device Target ID
  2265. Lun         Device Logical Unit Number
  2266. Flags       ?
  2267. Flags2      ?
  2268. LBA         ?
  2269. DataSize    Size of Data Buffer
  2270. DataBuff    Pointer to Data Buffer
  2271.  
  2272. [RETURNS]
  2273.  
  2274. [DESCRIPTION]
  2275.  
  2276.   { This command issues the CD-ROM READ SUB-CHANNEL command   }
  2277.  
  2278. [SEE-ALSO]
  2279.  
  2280. [EXAMPLE]
  2281.  
  2282. -*)
  2283.  
  2284. Function  SAL_S2CDReadSubChannel(      Bus         : BYTE;
  2285.                                     SubChannel  : BYTE;
  2286.                                     Target      : BYTE;
  2287.                                     Lun         : BYTE;
  2288.                                     Flags       : BYTE;
  2289.                                     Flags2      : BYTE;
  2290.                                     LBA         : LONGINT;
  2291.                                     DataSize    : LONGINT;
  2292.                                     DataBuff    : Pointer     ): TError;
  2293.  
  2294. Var
  2295.   CDB : TCDB;
  2296.  
  2297. BEGIN
  2298.  
  2299.   HM_CDB10Load(  @CDB,
  2300.                  $42,
  2301.                  Flags,
  2302.                  Flags2,
  2303.                  0,
  2304.                  0,
  2305.                  0,
  2306.                  0,
  2307.                  T4Byte( DataSize )[2],
  2308.                  T4Byte( DataSize )[1],
  2309.                  0                             );
  2310.  
  2311.   SAL_S2CDReadSubChannel :=    HM_ExecSCSI(  ES_Poll+ES_Read,
  2312.                                           Target,
  2313.                                           Lun,
  2314.                                           Channel,
  2315.                                           SubChannel,
  2316.                                           @CDB,
  2317.                                           10,
  2318.                                           DataBuff,
  2319.                                           DataSize,
  2320.                                           NIL,
  2321.                                           0,
  2322.                                           NIL                 );
  2323.  
  2324. END;  { SAL_S2CDReadSubChannel }
  2325.  
  2326. {────────────────────────────────────────────────────────────────────────────}
  2327.  
  2328. (*-
  2329.  
  2330. [FUNCTION]
  2331.  
  2332. Function  SAL_S2CDReadTOC(          Bus         : BYTE;
  2333.                                     SubChannel  : BYTE;
  2334.                                     Target      : BYTE;
  2335.                                     Lun         : BYTE;
  2336.                                     Flags       : BYTE;
  2337.                                     StartTrack  : BYTE;
  2338.                                     DataSize    : LONGINT;
  2339.                                     DataBuff    : Pointer     ): TError;
  2340.  
  2341. [PARAMETERS]
  2342.  
  2343. Bus         ?
  2344. SubChannel  ?
  2345. Target      Device Target ID
  2346. Lun         Device Logical Unit Number
  2347. Flags       ?
  2348. StartTrack  ?
  2349. DataSize    Size of Data Buffer
  2350. DataBuff    Pointer to Data Buffer
  2351.  
  2352. [RETURNS]
  2353.  
  2354. [DESCRIPTION]
  2355.  
  2356.   { This command issues the CD-ROM READ TOC command       }
  2357.  
  2358. [SEE-ALSO]
  2359.  
  2360. [EXAMPLE]
  2361.  
  2362. -*)
  2363.  
  2364. Function  SAL_S2CDReadTOC(          Bus         : BYTE;
  2365.                                     SubChannel  : BYTE;
  2366.                                     Target      : BYTE;
  2367.                                     Lun         : BYTE;
  2368.                                     Flags       : BYTE;
  2369.                                     StartTrack  : BYTE;
  2370.                                     DataSize    : LONGINT;
  2371.                                     DataBuff    : Pointer     ): TError;
  2372. Var
  2373.   CDB : TCDB;
  2374.  
  2375. BEGIN
  2376.  
  2377.   HM_CDB10Load(  @CDB,
  2378.                  $43,
  2379.                  Flags,
  2380.                  0,
  2381.                  0,
  2382.                  0,
  2383.                  0,
  2384.                  StartTrack,
  2385.                  T4Byte( DataSize )[2],
  2386.                  T4Byte( DataSize )[1],
  2387.                  0                             );
  2388.  
  2389.   SAL_S2CDReadTOC :=           HM_ExecSCSI(  ES_Poll+ES_Read,
  2390.                                           Target,
  2391.                                           Lun,
  2392.                                           Channel,
  2393.                                           SubChannel,
  2394.                                           @CDB,
  2395.                                           10,
  2396.                                           DataBuff,
  2397.                                           DataSize,
  2398.                                           NIL,
  2399.                                           0,
  2400.                                           NIL                 );
  2401.  
  2402. END;  { SAL_S2CDReadTOC }
  2403.  
  2404. {────────────────────────────────────────────────────────────────────────────}
  2405.  
  2406.  
  2407. {────────────────────────────────────────────────────────────────────────────}
  2408.  
  2409. {--------------------------}
  2410. { SCSI-2 Scanner Functions }
  2411. {--------------------------}
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418. ************************ *)
  2419.  
  2420.